/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.ngc;

import edu.ucue.ptc.gco.dao.CiudadDAO;
import edu.ucue.ptc.gco.dao.CiudadDAOLocal;
import edu.ucue.ptc.gco.mdl.Ciudad;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import edu.ucue.ptc.gco.util.CiudadValidadorException;
import edu.ucue.ptc.gco.util.ValidarAtributoUtil;
import java.sql.SQLDataException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateful;
import javax.inject.Inject;

/**
 *
 * @author DELL
 */
@Stateful
public class CiudadManager implements CiudadManagerLocal {

    @Inject
    private CiudadDAOLocal ciudadDao;
    
    @Override
    public boolean crearCiudad(Ciudad ciudad) throws CiudadValidadorException{        
        try
        {            
            ValidarAtributoUtil.validarStringNuloVacio("nombre", ciudad.getNombre());
            ciudadDao.crear(ciudad);
            return true;
        }
        catch(AtributoInvalidoException aie)
        {                              
            throw new CiudadValidadorException(aie);                        
        }
        catch(Exception e)
        {                              
            throw new CiudadValidadorException("No se pudo guardar ciudad, revise los parametros");                        
        }
    }

    @Override
    public List<Ciudad> listarCiudades() {
        return ciudadDao.listarTodos();
    }    
    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    public boolean actualizarCiudad(Ciudad ciudad) throws CiudadValidadorException{
        try
        {
            ValidarAtributoUtil.validarStringNuloVacio("nombre", ciudad.getNombre());
            ciudadDao.actualizar(ciudad);
            return true;
        }
        catch(AtributoInvalidoException ex)
        {                              
            throw new CiudadValidadorException("No se pudo actualizar la Ciudad");                        
        }
    }

    @Override
    public boolean eliminarCiudad(Ciudad ciudad) throws CiudadValidadorException{
        try
        {
            ciudadDao.eliminar(ciudad);
            return true;
        }
        catch(Exception ex)
        {                              
            throw new CiudadValidadorException("No se pudo eliminar la Ciudad");                        
        }
    }

    @Override
    public boolean eliminarCiudad(String idCiudad) throws CiudadValidadorException{
        try
        {
            ciudadDao.eliminarc(idCiudad);
            return true;
        }catch(Exception ex)
        {                              
            throw new CiudadValidadorException("No se pudo eliminar la Ciudad");                        
        }
    }

    @Override
    public boolean eliminarCiudad(Long idCiudad) throws CiudadValidadorException{
        try
        {
            ciudadDao.eliminarc(idCiudad);
            return true;
        }catch(Exception ex)
        {                              
            throw new CiudadValidadorException("No se pudo eliminar la Ciudad");                        
        }
    }

    @Override
    public Ciudad obtenerCiudadPorId(String idCiudad) throws CiudadValidadorException {
        try
        {
            ciudadDao.eliminarc(idCiudad);
            return ciudadDao.obtenerPorId(idCiudad);
        }catch(Exception ex)
        {                              
            throw new CiudadValidadorException("No se pudo obtener la Ciudad");                        
        }
    }

    @Override
    public void existeCiudad(int id) throws AtributoInvalidoException {
        if (id==0){
            throw new AtributoInvalidoException("Ciudad",id,"LA CIUDAD ES INCORRECTA");
        }
        List<Ciudad> lciudad=ciudadDao.listarCiudadWhere(id);
        if (lciudad==null || lciudad.isEmpty()){
            throw new AtributoInvalidoException("Ciudad",id,"LA CIUDAD ES INCORRECTA");
        }
               
    }
}
